package cn.nr19.jian.token

// 编辑器用




// 自由组合
class ENodes : Node {
    constructor()
    constructor(n : Node){
        datas.add(n)
    }
    constructor(ns : List<Node>){
        datas.addAll(ns)
    }
    var datas = ArrayList<Node>()
    fun add(n : Node){
        this.datas.add(n)
    }
    override fun nodeType(): ENode = ENode.value
    override fun toString(): String {
        StringBuilder().apply {
            datas.forEach {
                append(it.toString()).append(" ")
            }

            return toString()
        }

    }
}

// 仅编辑器时使用。记录符号的。解析节点时不独立解析符号。
class SymbolNode : Node {
    constructor()
    constructor(t : String){
        this.value = t
    }
    var value = ""
    override fun nodeType(): ENode = ENode.value
    override fun toString(): String {
        return value
    }
}

// 代码本身就是节点，但没有被编译为节点的节点。
class NodeStr(val value : String) : NodeValue(){
    override fun toString(): String {
        return value
    }
}